package packVistas;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableColumn;

import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

import javax.swing.JTextField;

import packLigaDeFutbol.GestorActuaciones;
import packLigaDeFutbol.GestorPartidos;
import packLigaDeFutbol.UtilControles;
import packLigaDeFutbol.comboValue;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.table.DefaultTableModel;

public class GestionCambios extends JDialog {

	private boolean cargando;
	private JPanel contentPane;
	private JTable tMinJug;
	private JComboBox<comboValue> cmbPartido, cmbJReti, cmbJIncor;
	private JSpinner spnMinuto;

	private int idPartido, idArbitro;


	public GestionCambios(int pIdArbitro) {
		cargando = true;
		setTitle("Gestion de Cambios");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setModal(true);
		setBounds(100, 100, 419, 485);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new BorderLayout(0, 0));
		
				JPanel centro = new JPanel();
				contentPane.add(centro, BorderLayout.CENTER);
				centro.setLayout(new FormLayout(new ColumnSpec[] {
						FormFactory.RELATED_GAP_COLSPEC,
						ColumnSpec.decode("center:max(119dlu;default):grow"),
						FormFactory.RELATED_GAP_COLSPEC,
						ColumnSpec.decode("center:default:grow"),
						FormFactory.RELATED_GAP_COLSPEC,},
						new RowSpec[] {
						FormFactory.RELATED_GAP_ROWSPEC,
						FormFactory.DEFAULT_ROWSPEC,
						FormFactory.RELATED_GAP_ROWSPEC,
						FormFactory.DEFAULT_ROWSPEC,
						FormFactory.RELATED_GAP_ROWSPEC,
						RowSpec.decode("top:max(21dlu;default)"),
						FormFactory.RELATED_GAP_ROWSPEC,
						FormFactory.DEFAULT_ROWSPEC,
						FormFactory.RELATED_GAP_ROWSPEC,
						FormFactory.DEFAULT_ROWSPEC,
						FormFactory.RELATED_GAP_ROWSPEC,
						FormFactory.DEFAULT_ROWSPEC,
						FormFactory.RELATED_GAP_ROWSPEC,
						RowSpec.decode("min(50dlu;default):grow"),
						FormFactory.RELATED_GAP_ROWSPEC,
						FormFactory.DEFAULT_ROWSPEC,
						FormFactory.RELATED_GAP_ROWSPEC,}));
				
						JLabel lblNewLabel = new JLabel("Partido:");
						centro.add(lblNewLabel, "2, 2, left, default");
						
								cmbPartido = new JComboBox<comboValue>();
								cmbPartido.addActionListener(new ActionListener() {
									public void actionPerformed(ActionEvent arg0) {
										//Si esta cargando el combo no hacemos nada
										if (!cargando) {
											JComboBox<comboValue> cb = (JComboBox<comboValue>)arg0.getSource(); //obtenemos el combo
											idPartido = ((comboValue)cb.getSelectedItem()).getValor();			//obtenemos el id del partido seleccionado

											//Cargamos el combo de los jugadores suplentes como titulares
											//como parametros le pasamos el combo de los jugadores y el resultset de todos los jugadores de un partido, suplentes para incorporarse, titulares para retirarse.
											UtilControles.cargarCombo(cmbJReti, GestorPartidos.get().obtenerTitularesDePartido(idPartido));
											UtilControles.cargarCombo(cmbJIncor, GestorPartidos.get().obtenerSuplentesDePartido(idPartido));
											//Cargamos la tabla con la lista de cambios del partido
											cargarTabla();
										}
									}

								});
								centro.add(cmbPartido, "4, 2, fill, default");
								
										JPanel panel = new JPanel();
										centro.add(panel, "2, 6, left, top");
										
												JLabel tMin = new JLabel("Minuto");
												panel.add(tMin);
												
														spnMinuto = new JSpinner();
														centro.add(spnMinuto, "4, 6, fill, center");
														
																JLabel lblNewLabel_3 = new JLabel("Jugador retirado");
																centro.add(lblNewLabel_3, "2, 8");
																
																		JLabel lblNewLabel_4 = new JLabel("Jugador incorporado");
																		centro.add(lblNewLabel_4, "4, 8");
																		
																				cmbJReti = new JComboBox<comboValue>();
																				centro.add(cmbJReti, "2, 10, fill, default");
																				
																						cmbJIncor = new JComboBox<comboValue>();
																						centro.add(cmbJIncor, "4, 10, fill, default");
																						
																								JButton btnNewButton_2 = new JButton("anotar incidencia");
																								btnNewButton_2.addMouseListener(new MouseAdapter() {
																									@Override
																									public void mouseClicked(MouseEvent arg0) {
																										//se comprueba que el texto no est� vacio ni sea incorrecto

																										//insertamos la actuacion del cambio en la base de datos
																										int idActuacion = GestorActuaciones.get().crearActuacionYDevolverID(
																												idPartido, 												//id del partido
																												((comboValue)cmbJReti.getSelectedItem()).getValor(), 	//id del jugador
																												4,														//idtipo (4 es cambio)
																												Integer.parseInt(spnMinuto.getValue().toString())						//minuto
																												);


																										GestorActuaciones.get().crearCambio( 												
																												((comboValue)cmbJIncor.getSelectedItem()).getValor(), 	//idJugador que entra
																												idActuacion);

																										cmbJReti.setSelectedIndex(0);
																										cmbJIncor.setSelectedIndex(0);  //reiniciamos los combos a su posicion inicial
																										spnMinuto.setValue(0); //Eliminamos el texto del minuto

																										cargarTabla();					//volvemos a cargar la tabla de los cambios
																									}


																								});
																								centro.add(btnNewButton_2, "2, 12, 3, 1, center, default");
																								
																										JScrollPane scrollPane = new JScrollPane();
																										centro.add(scrollPane, "2, 14, 3, 1, fill, fill");
																										
																												tMinJug = new JTable();
																												scrollPane.setViewportView(tMinJug);
																												
																														JButton btnNewButton = new JButton("Borrar incidencia");
																														btnNewButton.addMouseListener(new MouseAdapter() {
																															@Override
																															public void mouseClicked(MouseEvent arg0) {
																																//comprobamos que haya alguna fila seleccionada
																																if (tMinJug.getSelectedRow() != -1){

																																	//con esto sabemos el ID de la fila que tenemos seleccionada:
																																	//--tminjug.getSelectedRow nos devuelve la fila seleccionada
																																	//--el 0 es porque al hacer la select el ID de la actuacion es el primer campo
																																	int idActuacion = Integer.parseInt(tMinJug.getValueAt(tMinJug.getSelectedRow(), 0).toString());

																																	//eliminamos el cambio con la id que queremos borrar. Deber� borrar 1� ek cambio como tabla por s� misma, 
																																	//y a continucaci�n por estar marcado como ON DELETE CASCADE EN LA BD, deber� borrar su actuaci�n asociada
																																	GestorActuaciones.get().eliminarActuacion(idActuacion);

																																	//cargamos la tabla para que no aparezca la actuacion que hemos eliminado
																																	cargarTabla();
																																}
																															}
																														});
																														centro.add(btnNewButton, "2, 16");
																														
																																JButton btnNewButton_1 = new JButton("Cerrar");
																																btnNewButton_1.addActionListener(new ActionListener() {
																																	public void actionPerformed(ActionEvent e) {
																																		dispose();
																																	}
																																});
																																centro.add(btnNewButton_1, "4, 16");
																																// al inicio se carga �ste y al cargarse �ste, se cargan los dem�s en funci�n del partido seleccionado.
																																UtilControles.cargarCombo(cmbPartido, GestorPartidos.get().obtenerPartidosDeArbitro(pIdArbitro));
		cargando = false;
	}

	private void cargarTabla() {
		//cargamos la tabla de los goles
		//como parametros le pasamos la tabla y el resultset con los cambios de un partido
		UtilControles.cargarTabla(tMinJug, GestorPartidos.get().mostrarCambiosDePartido(idPartido));
	}

}






